<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Markmap</title>
<style>
* {
  margin: 0;
  padding: 0;
}
#mindmap {
  display: block;
  width: 100vw;
  height: 100vh;
  font-weight: 400 16px/20px sans-serif;
}
</style>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/markmap-toolbar@0.14.3/dist/style.min.css">
</head>
<body>
<svg id="mindmap"></svg>
<script src="https://cdn.jsdelivr.net/npm/d3@6.7.0"></script><script src="https://cdn.jsdelivr.net/npm/markmap-view@0.14.3"></script><script src="https://cdn.jsdelivr.net/npm/markmap-toolbar@0.14.3/dist/index.umd.min.js"></script><script>(r => {
          setTimeout(r);
        })(() => {
  const {
    markmap,
    mm
  } = window;
  const toolbar = new markmap.Toolbar();
  toolbar.attach(mm);
  const el = toolbar.render();
  el.setAttribute('style', 'position:absolute;bottom:20px;right:20px');
  document.body.append(el);
})</script><script>((getMarkmap, getOptions, root, jsonOptions) => {
        const markmap = getMarkmap();
        window.mm = markmap.Markmap.create('svg#mindmap', (getOptions || markmap.deriveOptions)(jsonOptions), root);
      })(() => window.markmap,null,{"type":"heading","depth":0,"payload":{"lines":[0,1]},"content":"3.设计模式七大原则","children":[{"type":"heading","depth":1,"payload":{"lines":[1,2]},"content":"3.1.章节内容概述"},{"type":"heading","depth":1,"payload":{"lines":[2,3]},"content":"3.2.章节内容大纲"},{"type":"heading","depth":1,"payload":{"lines":[3,4]},"content":"3.3.单一职责原则SRP","children":[{"type":"heading","depth":2,"payload":{"lines":[4,5]},"content":"3.3.1.单一职责原则介绍"},{"type":"heading","depth":2,"payload":{"lines":[5,6]},"content":"3.3.2.单一职责原则代码","children":[{"type":"heading","depth":3,"payload":{"lines":[6,7]},"content":"3.3.2.1.不使用单一职责原则代码"},{"type":"heading","depth":3,"payload":{"lines":[7,8]},"content":"3.3.2.2.使用单一职责原则代码","children":[{"type":"heading","depth":4,"payload":{"lines":[8,9]},"content":"3.3.2.2.1.类级别单一职责原则代码"},{"type":"heading","depth":4,"payload":{"lines":[9,10]},"content":"3.3.2.2.2.方法别单一职责原则代码"}]}]}]},{"type":"heading","depth":1,"payload":{"lines":[10,11]},"content":"3.4.接口隔离原则ISP","children":[{"type":"heading","depth":2,"payload":{"lines":[11,12]},"content":"3.4.1.接口隔离原则介绍"},{"type":"heading","depth":2,"payload":{"lines":[12,13]},"content":"3.4.2.接口隔离原则代码","children":[{"type":"heading","depth":3,"payload":{"lines":[13,14]},"content":"3.4.2.1.不使用接口隔离原则代码"},{"type":"heading","depth":3,"payload":{"lines":[14,15]},"content":"3.4.2.2.使用接口隔离原则代码"}]}]},{"type":"heading","depth":1,"payload":{"lines":[15,16]},"content":"3.5.依赖倒转原则DIP","children":[{"type":"heading","depth":2,"payload":{"lines":[16,17]},"content":"3.5.1.依赖倒转原则介绍"},{"type":"heading","depth":2,"payload":{"lines":[17,18]},"content":"3.5.2.依赖倒转原则代码","children":[{"type":"heading","depth":3,"payload":{"lines":[18,19]},"content":"3.5.2.1.不使用依赖倒转原则代码"},{"type":"heading","depth":3,"payload":{"lines":[19,20]},"content":"3.5.2.2.使用依赖倒转原则代码","children":[{"type":"heading","depth":4,"payload":{"lines":[20,21]},"content":"3.5.2.2.1.依赖倒转原则简单案例"},{"type":"heading","depth":4,"payload":{"lines":[21,22]},"content":"3.5.2.2.2.通过接口传递依赖"},{"type":"heading","depth":4,"payload":{"lines":[22,23]},"content":"3.5.2.2.3.通过构造方法传递依赖"},{"type":"heading","depth":4,"payload":{"lines":[23,24]},"content":"3.5.2.2.4.通过setter()方法传递依赖"}]}]}]},{"type":"heading","depth":1,"payload":{"lines":[24,25]},"content":"3.6.里氏替换原则LSP","children":[{"type":"heading","depth":2,"payload":{"lines":[25,26]},"content":"3.6.1.里氏替换原则介绍"},{"type":"heading","depth":2,"payload":{"lines":[26,27]},"content":"3.6.2.里氏替换原则代码","children":[{"type":"heading","depth":3,"payload":{"lines":[27,28]},"content":"3.6.2.1.不使用里氏替换原则代码"},{"type":"heading","depth":3,"payload":{"lines":[28,29]},"content":"3.6.2.2.使用里氏替换原则代码"}]}]},{"type":"heading","depth":1,"payload":{"lines":[29,30]},"content":"3.7.开闭原则OCP","children":[{"type":"heading","depth":2,"payload":{"lines":[30,31]},"content":"3.7.1.开闭原则介绍"},{"type":"heading","depth":2,"payload":{"lines":[31,32]},"content":"3.7.2.开闭原则代码","children":[{"type":"heading","depth":3,"payload":{"lines":[32,33]},"content":"3.7.2.1.不使用开闭原则代码"},{"type":"heading","depth":3,"payload":{"lines":[33,34]},"content":"3.7.2.2.使用开闭原则代码"}]}]},{"type":"heading","depth":1,"payload":{"lines":[34,35]},"content":"3.8.迪米特原则LoD","children":[{"type":"heading","depth":2,"payload":{"lines":[35,36]},"content":"3.8.1.迪米特原则介绍"},{"type":"heading","depth":2,"payload":{"lines":[36,37]},"content":"3.8.2.迪米特原则代码","children":[{"type":"heading","depth":3,"payload":{"lines":[37,38]},"content":"3.8.2.1.不使用迪米特原则代码"},{"type":"heading","depth":3,"payload":{"lines":[38,39]},"content":"3.8.2.2.使用迪米特原则代码"}]}]},{"type":"heading","depth":1,"payload":{"lines":[39,40]},"content":"3.9.合成复用原则CARP","children":[{"type":"heading","depth":2,"payload":{"lines":[40,41]},"content":"3.9.1.合成复用原则介绍"},{"type":"heading","depth":2,"payload":{"lines":[41,42]},"content":"3.9.2.合成复用原则代码","children":[{"type":"heading","depth":3,"payload":{"lines":[42,43]},"content":"3.9.2.1.不使用合成复用原则代码"},{"type":"heading","depth":3,"payload":{"lines":[43,44]},"content":"3.9.2.2.使用合成复用原则代码"}]}]}]},null)</script>
</body>
</html>
